package com.jl.magic.enums;

import java.util.Arrays;

import static com.jl.magic.enums.SyntheticStyleEnum.FUZZIFICATION;
import static com.jl.magic.enums.SyntheticStyleEnum.SPLICING;

/**
 * @author jiangli
 * @create 2020/7/10 3:50 下午
 * <p>
 * 镶元形状枚举
 */
public enum ShapeEnum {

    /**
     * 圆形，支持直接拼接、模糊化合成
     */
    CIRCLE("圆形", SPLICING, FUZZIFICATION),
    /**
     * 三角形
     */
    TRIANGLE("三角形"),
    /**
     * 等边三角形
     */
    EQUILATERAL_TRIANGLE("等边三角形"),
    /**
     * 正方形，支持直接拼接、模糊化合成
     */
    SQUARE("正方形", SPLICING, FUZZIFICATION),
    /**
     * 长方形
     */
    RECTANGLE("长方形"),
    /**
     * 等边五角形
     */
    EQUILATERAL_PENTAGON("等边五角形"),
    /**
     * 等边六角形
     */
    EQUILATERAL_HEXAGON("等边六角形");

    /**
     * 形状名称
     */
    final String name;
    /**
     * 形状对应默认支持的合成风格
     */
    final SyntheticStyleEnum[] styles;

    ShapeEnum(String name, SyntheticStyleEnum... styles) {
        this.name = name;
        this.styles = styles;
    }

    public boolean contains(SyntheticStyleEnum styleEnum) {
        return Arrays.asList(this.styles).contains(styleEnum);
    }

    public String getName() {
        return name;
    }

    public SyntheticStyleEnum[] getStyles() {
        return styles;
    }

}
